package xyccontroller

import (
	"Cgo/backend/models"
	"Cgo/common"
	"strconv"

	"github.com/gin-gonic/gin"
)

func XycUserController(r *gin.RouterGroup) {
	r.POST("/add", common.HandlerFunc(AddUser))
	r.DELETE("/delete", common.HandlerFunc(DeleteUser))
	r.PUT("/update", common.HandlerFunc(UpdateUser))
	r.GET("/find", common.HandlerFunc(FindUser))
}

// 添加用户
// @Summary 添加用户
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param user body models.XycUser true "用户信息"
// @Success 200 {object} common.RT[string]
// @Router /backend/xyc/user/add [post]
func AddUser(c *gin.Context) common.Result {
	var user models.XycUser
	if err := c.ShouldBindJSON(&user); err != nil {
		return common.R.Fail(err.Error())
	}
	if err := UserDao.AddUser(user); err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("添加用户成功")
}

// 删除用户
// @Summary 删除用户
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param id query int true "用户id"
// @Success 200 {object} common.RT[string]
// @Router /backend/xyc/user/delete [delete]
func DeleteUser(c *gin.Context) common.Result {
	idStr := c.Query("id")
	id, _ := strconv.Atoi(idStr)
	user := models.XycUser{Id: id}
	if err := UserDao.DeleteUser(user); err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("删除用户成功")
}

// 更新用户
// @Summary 更新用户
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param user body models.XycUser true "用户信息"
// @Success 200 {object} common.RT[string]
// @Router /backend/xyc/user/update [put]
func UpdateUser(c *gin.Context) common.Result {
	var user models.XycUser
	if err := c.ShouldBindJSON(&user); err != nil {
		return common.R.Fail(err.Error())
	}
	if err := UserDao.UpdateUser(user); err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("更新用户成功")
}

// 查找用户
// @Summary 查找用户
// @description 根据id查找用户,不传id则查找所有用户
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param id query int false "用户id"
// @Success 200 {object} common.RT[[]models.XycUser]
// @Router /backend/xyc/user/find [get]
func FindUser(c *gin.Context) common.Result {
	idStr := c.Query("id")
	var id int
	if idStr != "" {
		id, _ = strconv.Atoi(idStr)
	}
	users, err := UserDao.FindUser(models.XycUser{Id: id})
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success(users)
}
